// pages/personal-info/personal-info.js
Page({

  /**
   * 页面的初始数据
   */
  data: {
    backendUrl: 'http://127.0.0.1:88/api/user/',
    userInfo: {},
    tempAvatarUrl: ''
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad() {
    this.loadUserInfo();
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  },

  // 加载用户信息
  loadUserInfo() {
    const userInfo = wx.getStorageSync('userInfo');
    if (!userInfo) {
      wx.showToast({
        title: '请先登录',
        icon: 'none'
      });
      setTimeout(() => {
        wx.navigateBack();
      }, 1500);
      return;
    }
    
    wx.request({
      url: this.data.backendUrl + 'get_user_info.php',
      data: {
        user_id: userInfo.id
      },
      success: (res) => {
        if (res.data.status === 'success') {
          this.setData({
            userInfo: res.data.user_info
          });
        }
      }
    });
  },

  // 处理输入
  handleInput(e) {
    const { field } = e.currentTarget.dataset;
    const { value } = e.detail;
    this.setData({
      [`userInfo.${field}`]: value
    });
  },

  // 处理性别选择
  handleGenderChange(e) {
    const gender = parseInt(e.detail.value) === 0 ? '1' : '2';
    this.setData({
      'userInfo.gender': gender
    });
  },

  // 选择头像
  chooseAvatar() {
    wx.chooseMedia({
      count: 1,
      mediaType: ['image'],
      sourceType: ['album', 'camera'],
      success: (res) => {
        // 上传头像
        this.uploadAvatar(res.tempFiles[0].tempFilePath);
      },
      fail: () => {
        wx.showToast({
          title: '选择失败',
          icon: 'none'
        });
      }
    });
  },

  // 上传头像
  uploadAvatar(tempFilePath) {
    wx.showLoading({ title: '上传中...' });
    
    wx.uploadFile({
      url: this.data.backendUrl + 'upload_avatar.php',
      filePath: tempFilePath,
      name: 'avatar',
      header: {
        'content-type': 'multipart/form-data'
      },
      formData: {
        user_id: this.data.userInfo.id
      },
      success: res => {
        try {
          const data = JSON.parse(res.data);
          if (data.status === 'success') {
            // 更新本地存储的用户信息
            const updatedUserInfo = {
              ...wx.getStorageSync('userInfo'),
              avatar: data.image_url
            };
            wx.setStorageSync('userInfo', updatedUserInfo);
            
            // 刷新页面数据
            this.loadUserInfo();
            
            wx.showToast({
              title: '头像更新成功',
              icon: 'success'
            });
          } else {
            wx.showToast({
              title: data.message || '上传失败',
              icon: 'none'
            });
          }
        } catch (e) {
          wx.showToast({
            title: '上传失败',
            icon: 'none'
          });
        }
      },
      fail: (err) => {
        wx.showToast({
          title: '上传失败',
          icon: 'none'
        });
      },
      complete: () => {
        wx.hideLoading();
      }
    });
  },

  // 保存修改
  saveChanges() {
    const { userInfo } = this.data;
    
    // 表单验证
    if (!userInfo.name || !userInfo.phone || !userInfo.email || !userInfo.age) {
      wx.showToast({
        title: '请填写完整信息',
        icon: 'none'
      });
      return;
    }

    wx.showLoading({ title: '保存中...' });

    wx.request({
      url: this.data.backendUrl + 'update_user_info.php',
      method: 'POST',
      header: {
        'content-type': 'application/x-www-form-urlencoded'
      },
      data: userInfo,
      success: (res) => {
        if (res.data.status === 'success') {
          wx.showToast({
            title: '保存成功',
            icon: 'success'
          });
          // 更新本地存储的用户信息
          wx.setStorageSync('userInfo', {
            ...wx.getStorageSync('userInfo'),
            ...userInfo
          });
          // 刷新页面数据
          this.loadUserInfo();
        } else {
          wx.showToast({
            title: res.data.message || '保存失败',
            icon: 'none'
          });
        }
      },
      fail: () => {
        wx.showToast({
          title: '保存失败',
          icon: 'none'
        });
      },
      complete: () => {
        wx.hideLoading();
      }
    });
  },

  // 跳转到修改密码页面
  goToChangePwd() {
    wx.navigateTo({
      url: '/pages/change-password/change-password'
    });
  }
})